给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....
这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT
的顺序打印,直到所有字符都被输出。
输入格式:
输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。
输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例:
1
| pcTclnGloRgLrtLhgljkLhGFauPewSKgt
|
输出样例:
思路
记录四种(大小写都算)字符的出现次数,然后用这些字符按顺序拼凑出GPLT即可,具体看代码
知识点:其实没什么,开拓下思维,可以看看switch的一种用法
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #include <iostream>
using namespace std;
int main() { int g, p, l, t; g = p = l = t = 0; string str; cin >> str; for(int i = 0; i < (int)str.size(); i++) { switch(str[i]) { case 'G': case 'g': g++; break; case 'P': case 'p': p++; break; case 'L': case 'l': l++; break; case 'T': case 't': t++; break; default: break; } } while(g + p + l + t > 0) {
if(g > 0) { cout << "G"; g--; } if(p > 0) { cout << "P"; p--; } if(l > 0) { cout << "L"; l--; } if(t > 0) { cout << "T"; t--; } } cout << endl; return 0; }
|